In an increasingly networked world, more and more traffic, such as data, voice, and video, is transmitted over public and proprietary networks. Network devices typically perform some form of load balancing to increase the performance of the network. In a router, for example, the forwarding decision may include a lookup in a forwarding table to identify a logical output port. The logical output port may correspond to a single physical output port, or a group of physical output ports. A logical-port to physical-port mapping table may be used to map the logical output port to the physical output port(s) to which the logical output port corresponds.
A load balancing technique, used in a network device, includes performing a hash on received packets to identify one of the physical output ports, corresponding to the logical output port, from which to transmit the received packets. This kind of static hashing of received packets to physical output ports guarantees that packets, associated with a same flow, are transmitted from the same physical output port and, thus, do not become out of order.
The characteristics of flows may change over time, however. As a result, output ports can become overwhelmed with traffic, thereby defeating the load balancing that the hashing is supposed to accomplish.